Список операций для плеера версии 5.7.0 в порядке возрастания приоритета:
&
OR
AND
OBJ, LOC, NO
=, <, >, !, <>, <=, >=, =<, =>
+, -
MOD
*, /
+, - (унарные)
Операции записанные на одной строке имеют одинаковый приоритет и выполняются по порядку слева направо, если присутствуют на одном уровне в выражении.
Операции в скобках имеют приоритет перед другими операциями.
Вычисение значений функций имеет приоритет перед всеми операциями.
Верным считается числовое выражение, значение которого отлично от 0. При значении 0 выражение считается ложным. Для значения "верно" настоятельно рекомендуется использовать -1, т.к. только в этом случае будут адекватно работать побитовые операторы в роли логических.
В более новых версиях плеера приоритет некоторых операций изменён.
* — арифметическая операция "УМНОЖЕНИЕ". Перемножает два числа. Общая запись:
, где [#выражение 1] и [#выражение 2] — два любых числовых значения, или выражения. Результатом работы операции является произведение двух чисел.
Примеры:
*= — операция "УМНОЖЕНИЕ-ПРИСВОЕНИЕ". Сочетает в себе операции присвоения и умножения. Умножает значение указанной переменной на определённое число и возвращает результат той же переменной. Общая запись:
, где ИМЯ_МАССИВА — это название переменной (без кавычек), или название массива с указанием ячейки, а [#выражение 1] — любое числовое значение или выражение.
Аналогично конструкции:
Пример:
+ — арифметическая операция "СЛОЖЕНИЕ". Суммирует два числа. Общая запись:
, где [выражение 1] и [выражение 2] — два любых значения, или выражения. Результатом работы операции является сумма двух значений.
Примеры:
Можно "суммировать" и текстовые значения. В этом случае операция работает как конкатенация:
+= (инкремент) — операция "ИНКРЕМЕНТ", сочетающая в себе операции присвоения и сложения. Прибавляет к текущему значению переменной указанное значение. Общая запись:
, где ИМЯ_МАССИВА — это название переменной (без кавычек), или название массива с указанием ячейки, а [выражение 1] — любое значение или выражение.
Аналогично конструкции:
Пример:
Возможно так же проводить инкремент со строковыми значениями, работает как конкатенация:
P.S.: Инкремент — во многих языках программирования это операция, которая выполняет увеличение переменной. Чаще всего под инкрементом подразумевается увеличение переменной на 1 единицу.
- — арифметическая операция "ВЫЧИТАНИЕ". Вычитает одно число из другого. Общая запись:
, где [выражение 1] и [выражение 2] — два любых значения, или выражения. Результатом работы операции является разность двух значений.
Примеры:
-= (декремент) — операция "ДЕКРЕМЕНТ", сочетающая в себе операции присвоения и вычитания. Вычитает из текущего значения переменной указанное значение. Общая запись:
, где ИМЯ_МАССИВА — это название переменной (без кавычек), или название массива с указанием ячейки, а [#выражение 1] — любое числовое значение или выражение.
Аналогично конструкции:
Пример:
P.S.: Декремент — во многих языках программирования это операция, которая выполняет уменьшение переменной. Чаще всего под декрементом подразумевается уменьшение переменной на 1 единицу.
унарные + и - — унарные операции. Общая запись:
, где [#выражение] — любое числовое значение или выражение. Результатом работы этих операций является то же самое значение, только в случае с унарным минусом — с противоположным знаком.
Примеры:
/ — арифметическая операция "ДЕЛЕНИЕ". Общая запись:
, где [#выражение 1] и [#выражение 2] — два любых числовых значения, или выражения. Значение [#выражение 2] не должно быть равным нулю. Результатом работы операции является частное от деления двух чисел.
Поскольку QSP поддерживает только целочисленные значения, деление производится так же нацело, без округления, с отсечением дробной части.
Примеры:
/= — операция "ДЕЛЕНИЕ-ПРИСВОЕНИЕ". Сочетает в себе операции присвоения и деления. Делит значение указанной переменной на определённое число и возвращает результат той же переменной. Общая запись:
, где ИМЯ_МАССИВА — это название переменной (без кавычек), или название массива с указанием ячейки, а [#выражение 1] — любое числовое значение или выражение.
Аналогично конструкции:
Пример:
< — операция сравнения "МЕНЬШЕ". Общая запись:
Если значение выражения [выражение_1] меньше значения выражения [выражение_2] операция вернёт -1, в противном случае вернёт 0. Иными словами: верно, если первое меньше второго.
Примеры:
Сравнивать можно и текстовые значения, при этом символы сравниваются поочерёдно, и большим считается символ, стоящий ближе к концу алфавита.
<= — операция сравнения "МЕНЬШЕ ЛИБО РАВНО". Общая запись:
Если значение выражения [выражение_1] меньше либо равно значению выражения [выражение_2] операция вернёт -1, в противном случае вернёт 0. Иными словами: верно, если первое меньше второго, либо равно ему.
Примеры:
Аналогично "=<" и конструкциям:
Сравнивать можно и текстовые значения, при этом символы сравниваются поочерёдно, и большим считается символ, стоящий ближе к концу алфавита.
<> — операция сравнения "НЕ РАВНО". Общая запись:
Если значение выражения [выражение_1] не равно значению выражения [выражение_2] операция вернёт -1, в противном случае вернёт 0. Иными словами: верно, если выражения не равны.
Аналогично "!", или конструкции:
Примеры:
Можно сравнивать и строковые значения:
= — операция сравнения "РАВНО". Общая запись:
Если значение выражения [выражение_1] равно значению выражения [выражение_2] операция вернёт -1, в противном случае вернёт 0. Иными словами: верно, если выражения равны.
Аналогично конструкции:
Примеры:
Можно сравнивать и строковые значения:
Не путать с операцией присвоения.
= — операция присвоения. Общая запись:
, где ИМЯ_МАССИВА — название переменной (не в кавычках), или название массива с указанием ячейки (не в кавычках), [значение] — любое значение или выражение.
Примеры:
Имена строковых переменных/массивов должны начинаться с символа $.
Внимание! Операцию присвоения не следует путать с операцией сравнения "РАВНО", хотя они очень похожи:
В этом случае плеер понимает, что внутри скобок находится операция сравнения, потому что скобки используются только для записи выражений. Запись:
синтаксически ошибочна. Плеер выдаст ошибку: недопустимое название переменной/массива. Так как в этом случае он не понимает, что это операция сравнения.
Если перед операцией сравнения стоит оператор, скобки можно не писать:
=< — операция сравнения "РАВНО ЛИБО МЕНЬШЕ". Общая запись:
Если значение выражения [выражение_1] меньше либо равно значению выражения [выражение_2] операция вернёт -1, в противном случае вернёт 0. Иными словами: верно, если первое меньше второго, либо равно ему.
Примеры:
Аналогично "<=" и конструкциям:
Сравнивать можно и текстовые значения, при этом символы сравниваются поочерёдно, и большим считается символ, стоящий ближе к концу алфавита.
Данная запись, хотя и допустима в QSP, к использованию не рекомендуется. Используйте "<= (меньше либо равно)" вместо этого.
=> — операция сравнения "РАВНО ИЛИ БОЛЬШЕ". Общая запись:
Если значение выражения [выражение_1] больше либо равно значению выражения [выражение_2] операция вернёт -1, в противном случае вернёт 0. Иными словами: верно, если первое больше второго, либо равно ему.
Примеры:
Аналогично ">=" и конструкциям:
Сравнивать можно и текстовые значения, при этом символы сравниваются поочерёдно, и большим считается символ, стоящий ближе к концу алфавита.
Данная запись, хотя и допустима в QSP, к использованию не рекомендуется. Используйте ">= (больше либо равно)" вместо этого.
> — операция сравнения "БОЛЬШЕ". Общая запись:
Если значение выражения [выражение_1] больше значения выражения [выражение_2] операция вернёт -1, в противном случае вернёт 0. Иными словами: верно, если первое больше второго.
Примеры:
Сравнивать можно и текстовые значения, при этом символы сравниваются поочерёдно, и большим считается символ, стоящий ближе к концу алфавита.
>= — операция сравнения "БОЛЬШЕ ЛИБО РАВНО". Общая запись:
Если значение выражения [выражение_1] больше либо равно значению выражения [выражение_2] операция вернёт -1, в противном случае вернёт 0. Иными словами: верно, если первое больше второго, либо равно ему.
Примеры:
Аналогично "=>" и конструкциям:
Сравнивать можно и текстовые значения, при этом символы сравниваются поочерёдно, и большим считается символ, стоящий ближе к концу алфавита.
! — операция сравнения "НЕ РАВНО". Общая запись:
Если значение выражения [выражение_1] не равно значению выражения [выражение_2] операция вернёт -1, в противном случае вернёт 0. Иными словами: верно, если выражения не равны.
Аналогично "<>", или конструкции:
Не путать с оператором комментария.
Для лучшей читаемости кода лучше использовать <>.
Примеры:
& — конкатенация, операция объединения строковых выражений. Общая запись:
Не путайте с символом перечисления команд:
Не рекомендуется использовать данную операцию для объединения строк, поскольку строки можно объединять через +:
Такая запись создаёт меньше путаницы и работает аналогичным образом.
AND — логическое "И" (побитовое "И"). Общая запись:
Всё данное выражение будет верным, если верны выражения [#выражение 1] и [#выражение 2].
Примеры:
LOC — операция проверяет наличие локации и возвращает -1, если локация есть, и — 0, если локации нет. Общая запись:
, где [$локация] — название локации, наличие которой необходимо проверить в игре. Выражение верно, если локация существует в игре.
Примеры:
MOD — операция вычисляет остаток от деления двух чисел. Общая запись:
, где [#выражение 1] — делимое, [#выражение 2] — делитель.
Примеры:
Остаток от деления отрицательного числа будет отрицательным числом.
NO — операция отрицания. Общая запись:
Если [#выражение] верно, то всё выражение неверно, и наоборот.
Пример:
OBJ — операция проверяет наличие предмета в инвентаре и возвращает -1, если предмет есть, и — 0, если предмета нет. Общая запись:
, где [$название] — название предмета, наличие которого необходимо проверить в окне предметов. Выражение верно, если предмет добавлен в окно предметов.
Примеры:
OR — логическое "ИЛИ" (побитовое "ИЛИ"). Общая запись:
Всё данное выражение будет верным, если хотя бы одно из выражений [#выражение 1] и [#выражение 2] верно.
Примеры:
Aleks Versus'HowDo-F.A.Q.'2021-2022
Aleks Versus'Game Adventure Making'Really Unimaginable Stories'2013-2022
1.1. В чём разница между set x=10, let x=10 и x=10?
1.2. В чём разница между переменной со знаком $ и без знака $?
1.3. В чём разница между ' ' (апострофы) и " " (кавычки)?
1.4. В чём разница между *pl "строка" и просто " строка" ?
1.5. Чем отличаются эти две команды? *pl "<<$perem>>" и *pl $perem
1.6. В чём разница между dynamic и dyneval?
1.7. В чём разница между gt и goto?
1.8. Чем отличается goto от gosub?
18.1. Чем отличаются команды addqst и openqst?
Источники и дополнительные материалы
2.1. Как сделать, чтобы значение переменной изменялось с течением времени?
2.2. Как сделать, чтобы из одной локации меня через пару секунд перебрасывало в другую локацию?
2.3. Как сделать, чтобы через пару секунд после входа на локацию появлялось новое действие?
2.4. Как сделать, чтобы цикл выполнялся параллельно остальному коду, а не прерывал его?
Источники и дополнительные материалы
3.1. Как вывести на экран отдельное окошко с текстом? | Подскажите аналог команды alert в QSP.
3.2. Как вывести на экран окошко, в котором игрок должен ввести текст? | Подскажите аналог команды prompt в QSP.
3.3. Как прикрутить возможность выбора варианта к окну msg? | Подскажите аналог команды confirm в QSP.
3.4. Как сделать ввод имени игроком?
3.5. Как увеличить число правильных ответов, которые может ввести игрок? | Как сделать варианты для ответа через $input?
Источники и дополнительные материалы
4.1. Как сделать меню предмета?
4.2. Как сделать разные меню для двух и более предметов?
4.3. Как сделать меню в ссылках?
4.4. Как передавать локациям-пунктам меню аргументы?
4.5. Как делать контекстное (динамическое) меню?
4.6. Как вставить разделитель в меню?
4.7. Как вставить картинки в меню?
Источники и дополнительные материалы
5.1. Как сделать так, чтобы не писать один и тот же код в каждой локации?
5.2. Как сделать кнопку "Назад", работающую на каждой локации?
5.3. Почему в args на локации-обработчике перехода на новую локацию уже есть данные?
Источники и дополнительные материалы
6.1. Как вставить музыку или звук в игру?
6.2. Как запустить две звуковые дорожки?
6.3. Как при переходе на новую локацию прервать одну мелодию и запустить другую?
6.4. Как перезапустить звуковую дорожку?
Источники и дополнительные материалы
7.1. Как делать гиперссылки, по нажатию на которые выполняется код? | Как делать кликабельный текст? | Как сделать, чтобы по нажатию на текст что-то происходило?
7.2. Как менять цвет гиперссылки?
7.3. Как помещать в гиперссылки сложный код?
7.4. Как сделать гиперссылки без подчёркивания?
Источники и дополнительные материалы
8.1. Какой командой можно очистить окно дополнительного описания?
8.2. Существует ли команда для того, чтобы получить название текущей локации?
8.3. Какой командой можно вывести текст в окно дополнительного описания?
8.4. Есть ли команда, которая делает выход из игры?
Источники и дополнительные материалы
9.1. Как вставить картинку в игру?
9.2. Можно ли вставить в игру gif-файл?
9.3. Как вставить картинку в действие?
9.4. Как поставить картинку фоном?
9.5. Как выводить изображения послойно? Накладывать друг на друга?
9.6. Как сделать кликабельное изображение? | Как сделать так, чтобы при щелчке по изображению выполнялись какие-то действия?
9.7. Как сделать сменяемое изображение на локации?
9.8. Как сделать вывод рандомного изображения?
Источники и дополнительные материалы
10.1. Для чего нужен оператор REFINT, и как он работает?
10.2. Как изменить цвет фона в игре?
10.3. Как изменить формат части текста? Размер, цвет, наклон и т.д.?
10.4. Как сделать красивый фон в классическом плеере?
10.5. Хочу, чтоб в игре окна располагались определённым образом. Как это сделать?
10.8. Как изменить цвет подсветки действий?
10.9. Как изменить цвет фона для отдельного окна?
10.10. Как сделать плавное появление текста? | Как сделать плавное изменение цвета фона? | Как сделать плавное изменение цвета текста?
10.11. Как использовать в игре собственный шрифт?
10.12. С предметов можно снимать выделение, а можно ли снять выделение с действия?
Источники и дополнительные материалы
11.1. При проверке условия записано просто число, без операции сравнения, но QSP не выдаёт ошибку. Почему?
11.2. Как сделать так, чтобы действие появлялось только при определённом условии?
11.3. Видел в одной из игр, как после нажатия на действие, оно становится неактивным. Как это сделать?
11.4. Как добавить текст, который будет выводиться только при выполнении определённого условия?
11.6. Как упростить условие с логическим И (AND)?
11.7. Как упростить взаимоисключающие условия? Логическое XOR.
Источники и дополнительные материалы
12.1. Зачем нужен оператор dynamic?
12.2. Можно ли сделать переменную с рандомным (случайным) названием?
12.3. Создаю действия с помощью цикла, но они работают неправильно. Что делать?
12.4. Почему не работает dynamic?
Источники и дополнительные материалы
13.1. Рисую таблицу и хочу зафиксировать высоту, но атрибут height не работает.
13.2. Пытаюсь использовать разные HTML-теги в игре, но они не работают — просто не выводятся. Почему?
13.3. Не работает IIF!
13.4. Пытаюсь сделать кликабельную картинку с помощью тегов MAP и AREA, но ничего не получается. | Не выводится картинка, не работает область клика, область клика смещена.
13.5. Не работает *pl в действии с goto.
13.6. В AeroQSP не работает атрибут.
13.7. Не работает гиперссылка в AeroQSP.
13.8. Не работает оператор JUMP — не может найти метку.
13.9. Не работает многострочный код. Как исправить?
13.10. Не работает многострочный код. Как исправить?
13.11. Сколько END`ов нужно добавить?
13.12. Не работает условие. Как исправить? (if skrom>10 and <15)
13.13. Не работают десятичные дроби, дробные числа, числа с запятыми!
Источники и дополнительные материалы
14.1. Как добавить предмет в окно предметов?
14.2. Как удалить предмет из окна предметов?
14.3. Как удалить все предметы?
14.4. Как добавить предмет в определённую позицию в окне предметов?
14.5. Как заменить один предмет на другой?
14.6. Как делать динамические/считаемые предметы? | Как делать стакающиеся предметы? | Как делать предметы рядом с названиями которых выводится их количество?
14.7. Как добавить предмет с картинкой но без названия?
14.8. Как сделать, чтоб при щелчке по предмету выполнялся какой-либо код?
14.9. Как снять выделение предмета? | Как сделать, чтобы выбранный предмет можно было кликнуть ещё раз?
14.10. Как сделать два списка предметов? Например для игры за разных персонажей.
14.11. Как сделать, чтобы плеер выполнял определённый код при добавлении любого предмета?
14.12. Как сделать два разных предмета с одинаковыми названиями?
14.13. Как сделать многоуровневый рюкзак? | Как сделать предметы в предметах?
14.14. Можно ли выводить предметы не в окне предметов?
Источники и дополнительные материалы
15.1. Зачем вообще нужна строка ввода (поле ввода)?
15.2. Как задействовать строку ввода в игре?
Источники и дополнительные материалы
16.1. Можно ли писать текст поверх вставленной картинки (не бэкграунда)?
16.2. Возможно ли сделать плавный переход между локациями?
16.3. Как расположить картинку справа, а текст слева?
16.4. Как ограничить размер выводимого изображения?
16.5. Как сделать рамку окна основного описания? | Как сделать, чтобы картинки шли по контуру основного окна?
16.6. Как сделать вывод предметов магазина не длинным списком, а в виде таблицы?
16.7. Можно ли зеркально отразить картинку методами плеера? | Можно ли задать максимальную или минимальную ширину элементу? | Можно ли вычислить доступное место в основном окне?
16.9. Можно как нибудь вывести текст в два столба в классике? К примеру характеристики персонажей.
16.10. Как работать с тегами MAP и AREA? Как разметить картинку на кликабельные зоны?
Источники и дополнительные материалы
17.1. Как запретить игроку самостоятельно сохранять игру?
17.3. Как сделать чекпойнты в игре?
Источники и дополнительные материалы
18.1. Чем отличаются команды addqst и openqst?
18.2. Как сделать лаунчер?
18.3. Мне нужно узнать, есть ли в папке файл (картинка, музыка и т.д.). Как это сделать?
Источники и дополнительные материалы
19.1. Как использовать ASCII-графику в QSP?
19.2. Как вставить в игру видео?
19.3. Как сделать так, чтобы текст появлялся на экране постепенно? По буквам?
19.4. Как защитить игру от чита?
19.5. Как задействовать клавиатуру в игре?
19.6. Как пропустить прохождение нескольких глав, чтобы протестировать вновь написанную главу и только её?
19.7. Как из под плеера выполнить произвольную строку кода?
19.8. Как узнать, на каком устройстве запущена игра? Телефон, компьютер, планшет?
19.9. Как обновлять переменные на экране?
19.10. Как сделать, чтобы текст выводился снизу вверх?
Источники и дополнительные материалы
20.1. Как сделать возврат на предыдущую локацию?
20.2. Как проверить число на чётность?
20.4. Как сделать, чтобы текст выводился не внизу окна основного описания, а сверху?
20.5. Как можно удалить часть текста из описания?
20.6. Как вывести на экран HTML-разметку, не отключая режим распознавания HTML? То есть при usehtml=1.
20.8. Как в QSP сравнить два массива?
20.11. Как сделать проценты?
20.12. Как решить задачу по поиску случайного набора слагаемых?
20.13. Как разредить текст пробелами?
20.14. Как сделать записную книжку в игре?
20.15. Как сделать так, чтобы на локацию можно было зайти только один раз?
20.16. Как заставить действия выводиться в нужном мне порядке?
20.17. Как сделать в игре книгу? Чтобы её можно было взять и потом прочитать?
20.18. Как сделать склад, сундук, тайник, место, в котором можно выкладывать и хранить предметы?
20.19. Как сделать выпадение случайного действия на локации?
20.20. Как сделать перемещение на случайную локацию?
20.21. Как сделать случайный предмет?
20.22. Как узнать, какие переменные есть в игре? Может для этого есть специальная команда?
20.23. Как убрать преформатирование из HTML-разметки?
Источники и дополнительные материалы
Источники и дополнительные материалы
22.1. Пишу несколько игр в Quest Navigator. Как сделать, чтобы у каждой игры было собственное оформление?
22.2. Как подключить свой шрифт к игре?
22.4. Хочу прописать игре собственный вид курсора, как это сделать?
22.6. Как узнать, на каком плеере запущена игра, на классическом QSP, или на Quest Navigator?
22.7. Как вставить видео в игру на Навигаторе?
22.8. Как делать standalone-сборку на Навигаторе? | Независимая сборка на Quest Navigator
22.10. Как выполнить JavaScript прямо из кода QSP?
22.11. Инструкция посмене оформления из кода QSP?
Источники и дополнительные материалы
23.2. Хочу разместить на локации около 100 действий. Это вообще возможно?
Источники и дополнительные материалы
24.1. Как сделать так, чтобы AeroQSP запускался прямо из Quest Generator?
24.2. Как сделать StandAlone-сборку на классическом плеере? | Можно ли сделать игру так, чтобы играть без плеера? | Как сделать пакетный файл запуска, чтобы игрок тыкал иконку start и сразу начинал играть?
Источники и дополнительные материалы
Алфавитный указатель ключевых слов, спецсимволов, синтаксем